package com.zhongying.jf.util.pay;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;

/**
 * 
 * <p>Description: [配置文件读取工具]</p>
 */
@SuppressWarnings("all")
public class ConfigHelper {
	
	private static Logger logger = Logger.getLogger(ConfigHelper.class);

	private static Map<String, Object> parameterCacheMap = null;

	static {
		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
		if (logger.isDebugEnabled()) {
			logger.debug("解析XML参数配置文件...");
		}
		parameterCacheMap = new HashMap<String, Object>();
		InputStream is = classLoader.getResourceAsStream("global.config.xml");
		Document document = XmlUtils.parse(is);
		Element elRoot = document.getRootElement();
		Iterator elIt = elRoot.elementIterator();
		while (elIt.hasNext()) {
			Element el = (Element) elIt.next();
			Attribute attrKey = el.attribute("key");
			String keyString = attrKey.getText();
			Attribute attrValue = el.attribute("value");
			String valueString = attrValue.getText();
			parameterCacheMap.put(keyString, valueString);
		}
	}

	/**
	 * 获取[applicationParam.xml]配置参数
	 * 
	 * @param pKey
	 * @return
	 */
	public static String getValue(String pKey) {
		String value = (String)parameterCacheMap.get(pKey);
		return value;
	}
	
//	private static final String CONFIG_PATH_PAY= "redis.properties";
//	
//	//private static final String CONFIG_PATH_RESOURCE = "resources.properties";
//	
//	private final static ConfigHelper instance = new ConfigHelper();
//	private static Object[] lock = new Object[0];
//	private static long lastTime = 0;
//	private static long intervalTime = 5 * 60 * 1000; 
//	
//
//	private AbstractConfiguration config;
//
//	private ConfigHelper() {
//		reload();
//	}
//
//	public void reload() {
//		PropertiesConfiguration c = null;
//		try {
//			c = new PropertiesConfiguration(CONFIG_PATH_PAY);
//			//c.append(new PropertiesConfiguration(CONFIG_PATH_RESOURCE));
//		} catch (ConfigurationException e) {
//			e.printStackTrace();
//		}
//		if (c != null)
//			config = c;
//	}
//
//	public static ConfigHelper getDefault() {
//		
//		if (System.currentTimeMillis() - lastTime > intervalTime) {
//			synchronized (lock) {
//				if (System.currentTimeMillis() - lastTime > intervalTime) {
//					lastTime = System.currentTimeMillis();
//					instance.reload();
//				}
//			}
//		}
//		
//		return instance;
//	}
//
//	public String getString(String infoLabel) {
//		return instance.config.getString(infoLabel);
//	}
//	
//	public byte[] getBytesFromBase64(String infoLabel) {
//		String base64 = getString(infoLabel);
//		if (base64 == null) {
//			throw new NullPointerException("read " + CONFIG_PATH_PAY+"： [" + infoLabel + "] is null, can not byte[]");
//		}
//		return Base64.decodeBase64(base64);
//	}
//
//	public String[] getStringArray(String infoLabel) {
//		return instance.config.getStringArray(infoLabel);
//	}
//
//	public boolean getBoolean(String infoLabel) {
//		return instance.config.getBoolean(infoLabel);
//	}
//
//	public int getInt(String infoLabel) {
//		return instance.config.getInt(infoLabel);
//	}
//
//	public int getInt(String infoLabel, int defaultValue) {
//		try {
//			return instance.config.getInt(infoLabel);
//		} catch (Exception e) {
//			return defaultValue;
//		}
//	}
//
//	public double getDouble(String infoLabel) {
//		return instance.config.getDouble(infoLabel);
//	}
//	
//    //获取解密值
//    public String getStringFromDES3Encrypt(String key){
//       return DES3Encrypt.decrypt(getString(key));
//    }
//    /**
//     * 获取解密值
//     * @param key
//     * @return
//     */
//    public String getDES3String(String key){
//    	String v = getString(key);
//    	if (v == null) return null;
//       return DES3Encrypt.decrypt(v);
//    }
//    
//	public static void main(String[] args) {
//		System.out.println(ConfigHelper.getDefault().getString("transaction.port"));
//	}
}
